// 动态加载菜单数据并渲染
function loadMenu() {
    console.log('尝试加载菜单数据...');
    const menuContainer = document.getElementById('menuContainer');

    if (!menuContainer) {
        console.error('未找到菜单容器元素');
        return;
    }

    // 从localStorage获取用户信息
    const userInfo = localStorage.getItem('userInfo');
    if (!userInfo) {
        console.error('用户未登录，无法获取菜单权限');
        menuContainer.innerHTML = '<li class="error">请先登录系统</li>';
        return;
    }

    try {
        const user = JSON.parse(userInfo);
        const roleId = user.roleId;
        
        if (!roleId) {
            console.error('用户信息中未找到角色ID');
            menuContainer.innerHTML = '<li class="error">用户权限信息不完整</li>';
            return;
        }

        console.log('获取到用户角色ID:', roleId);
        
        // 根据角色ID获取菜单列表
        axios.get('/admin/menu_manage/getMenusByRoleId', {
            params: {
                roleId: roleId
            }
        })
        .then(response => {
            console.log('API响应:', response);
            if (response.data && response.data.code === 200) {
                const menus = response.data.data || [];
                console.log('获取到的菜单数据:', menus);

                // 清空加载提示
                menuContainer.innerHTML = '';

                if (!menus || menus.length === 0) {
                    menuContainer.innerHTML = '<li class="empty">暂无菜单数据</li>';
                    return;
                }

                // 过滤掉停用的菜单（isShow === 0）
                const activeMenus = menus.filter(menu => menu.isShow === 1);
                console.log('过滤后的活跃菜单:', activeMenus);

                // 按父菜单ID分组
                const menuMap = {};
                activeMenus.forEach(menu => {
                    if (!menuMap[menu.parentId]) {
                        menuMap[menu.parentId] = [];
                    }
                    menuMap[menu.parentId].push(menu);
                });
                console.log('菜单映射:', menuMap);

                // 渲染顶级菜单（parentId === 0）
                if (menuMap[0] && menuMap[0].length > 0) {
                    // 性能优化：先构建完整的HTML字符串，再一次性插入DOM
                    let menuHtml = '';
                    
                    // 按menuOrder排序
                    menuMap[0].sort((a, b) => a.menuOrder - b.menuOrder).forEach(menu => {
                        console.log('渲染菜单项:', menu);
                        
                        // 检查是否有子菜单
                        const hasSubmenu = menuMap[menu.menuId] && menuMap[menu.menuId].length > 0;
                        const menuItemClass = hasSubmenu ? 'menu-item has-submenu' : 'menu-item';

                        // 构建菜单HTML
                        menuHtml += `<li class="${menuItemClass}"><a href="`;

                        if (hasSubmenu) {
                            menuHtml += '#';
                        } else {
                            menuHtml += menu.menuUrl || '#';
                        }

                        menuHtml += `">
                            <i class="fas ${menu.menuIcon || 'fa-circle'}"></i>
                            <span>${menu.menuName}</span>
                        </a>`;

                        // 如果有子菜单，添加子菜单结构
                        if (hasSubmenu) {
                            menuHtml += `<ul class="submenu">`;

                            // 渲染子菜单并按menuOrder排序
                            menuMap[menu.menuId].sort((a, b) => a.menuOrder - b.menuOrder).forEach(submenu => {
                                menuHtml += `
                                    <li class="submenu-item">
                                        <a href="${submenu.menuUrl || '#'}" class="nav-link">
                                            <i class="fas ${submenu.menuIcon || 'fa-circle'}"></i>
                                            <span>${submenu.menuName}</span>
                                        </a>
                                    </li>
                                `;
                            });

                            menuHtml += `</ul>`;
                        }

                        menuHtml += `</li>`;
                    });
                    
                    // 一次性插入DOM，减少重绘
                    menuContainer.innerHTML = menuHtml;
                } else {
                    console.log('没有顶级菜单');
                    menuContainer.innerHTML = '<li class="empty">暂无菜单</li>';
                }

                // 初始化菜单交互功能
                if (typeof initNavbar !== 'undefined') {
                    console.log('初始化导航栏');
                    initNavbar();
                }

                // 设置当前页面的活动菜单
                setActiveMenuByUrl();
            } else {
                console.error('获取菜单失败:', response.data ? response.data.message : '未知错误');
                menuContainer.innerHTML = '<li class="error">菜单加载失败，请刷新页面重试</li>';
            }
        })
        .catch(error => {
            console.error('获取菜单列表失败:', error);
            menuContainer.innerHTML = `<li class="error">菜单加载失败，请检查网络连接或API服务</li>`;
            menuContainer.innerHTML += `<li class="error">错误信息: ${error.message || '未知错误'}</li>`;
        });
    } catch (error) {
        console.error('解析用户信息失败:', error);
        menuContainer.innerHTML = '<li class="error">用户信息解析失败</li>';
    }
}

// 根据URL设置活动菜单
function setActiveMenuByUrl() {
    const currentPath = window.location.pathname;
    const fileName = currentPath.split('/').pop(); // 获取当前页面文件名
    const navLinks = document.querySelectorAll('.nav-link');
    
    console.log('设置活动菜单，当前路径:', currentPath, '文件名:', fileName);

    navLinks.forEach(link => {
        const linkPath = link.getAttribute('href');
        const linkFileName = linkPath.split('/').pop(); // 获取链接文件名
        
        console.log('检查链接:', linkPath, '链接文件名:', linkFileName);

        // 比较文件名确保匹配
        if (fileName === linkFileName) {
            link.classList.add('active');
            console.log('找到匹配的链接:', linkPath);

            // 展开父菜单
            const parentMenu = link.closest('.menu-item.has-submenu');
            if (parentMenu) {
                parentMenu.classList.add('open');
            }
        }
    });
}

// 添加防抖函数，避免短时间内重复刷新菜单
let loadMenuTimer = null;
function debouncedLoadMenu() {
    if (loadMenuTimer) {
        clearTimeout(loadMenuTimer);
    }
    loadMenuTimer = setTimeout(loadMenu, 300);
}

// 暴露给全局，以便在其他地方刷新菜单
window.loadMenu = loadMenu;
window.debouncedLoadMenu = debouncedLoadMenu;

console.log('menu-loader.js已加载');
// 注意：根据您的系统，移除了DOMContentLoaded事件监听器，由load-navbar.js控制加载时机
// 如果需要，可以取消下面的注释
// document.addEventListener('DOMContentLoaded', function() {
//     loadMenu();
// });
